In modern computer design, resources provided in a computer system are shared among several processing devices for efficient performance. Each resource can comprise, e.g., a processor configured to perform preselected operations or processing services for the other processing devices of the system. Whenever a resource is provided in a computer system, fairness becomes a design issue. Fairness concerns the fair allocation of the services provided by the resource among the processing devices that utilize the resource. It is typically a design criteria in the implementation of a resource that no one processing device so dominate the use of the resource that other processing devices of the computer system are unable to receive adequate service from the resource.
In one scheme for interlocking processing devices to a shared resource, such as a C.P.U., a plurality of storage devices, such as, e.g., ring buffers, is provided. Each processing device of the system that utilizes a particular resource is allocated to one or more of the ring buffers. In this manner, each processing device can write into addressable locations within an allocated ring buffer, requests for use of the resource and other information that may be required by the resource for the performance of its service. The resource operates to poll the addressable locations of the ring buffers, to read and process the requests and other information stored in the ring buffers.
In order to reduce polling required by the local resource, it is possible to maintain a summary register which can be subsequently read by the local resource in order to determine the order in which to process the requests fairly.
A known method for reading and processing such requests would be to maintain a bitmap in a register, where each bit position corresponds to an area of the memory associated with a single ring buffer. A write to a ring buffer would cause the corresponding bit in the bitmap to be set. The local resource, e.g. a processor, would be provided with a mechanism for clearing down a bit once it had been set and after the ring buffer had been polled for outstanding requests. Software could than be used to parse the bitmap. However, this approach has the distinct disadvantage of being slow and inefficient when the bitmap is being parsed under software control.